#ifndef PLOTSETTINGS_H
#define PLOTSETTINGS_H

#include <iostream>

using namespace std;

class PlotSettings
{
public:
    // Inicializa el valor minimo de los ejes X e Y a 0, el valor maximo a 10
    // y el numero de marcas por cada eje a 5
    PlotSettings();

    // Se incrementan (o decrementan) minX y maxX en dx marcas, y los valores
    // minY y maxY en dy marcas
    void scroll(int dx, int dy);

    // Llama al metodo adjustAxis con los valores minimo, maximo y numero de
    // marcas de cada eje
    void adjust();

    // Distancia entre los valores minimo y maximo del eje X
    inline double spanX() const
    {
        return maxX - minX;
    }

    // Distancia entre los valores minimo y maximo del eje Y
    inline double spanY() const
    {
        return maxY - minY;
    }

    double minX; // valor minimo del eje X del Plotter
    double maxX; // valor maximo del eje X del Plotter
    double minY; // valor minimo del eje Y del Plotter
    double maxY; // valor maximo del eje Y del Plotter

    int numXTicks; // numero de marcas del eje X del Plotter
    int numYTicks; // numero de marcas del eje Y del Plotter

private:
    // Reajusta los parametros min, max y numTicks para uno de los ejes del
    // Plotter. min y max se ajustan para que tomen valores agradables para
    // ser mostrados en el grafico (mejor [0,4] que [0.12,3.92]). numTicks
    // se ajusta al numero de marcas mas apropiado para el rango [min,max]
    void adjustAxis(double &min, double &max, int &numTicks);
};

#endif

